#include<iostream>
#include<future>
#include <unistd.h>

int Add(int num1, int num2)
{
    std::cout << "into add\n";
    return num1 + num2;
}

int main()
{
    //进行异步非阻塞调用
    //async策略：内部创建一个线程执行函数，，函数运行结果通过future获取
    // std::future<int> res = std::async(std::launch::async, Add, 11, 22);
   
    //deferred策略：同步策略，获取结果时再去执行任务
    std::future<int> res = std::async(std::launch::deferred, Add, 11, 22);
    sleep(1);
    std::cout << "----------------------------------" << std::endl;
    //获取异步任务结果，如果异步任务还没有执行完，就会阻塞
    std::cout << res.get() << std::endl;;
    return 0;
}